SEMCTL
Section: System Calls (2)
Updated: 21 November 1987
Index
Return to Main Contents
NAME
semctl - semaphore control operations
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semctl (semid, semnum, cmd, arg)
int semid, cmd;
int semnum;
union semun {
val;
struct semid_ds *buf;
ushort *array;
} arg;
DESCRIPTION
semctl()
provides a variety of semaphore control operations as specified by
cmd.
The following
cmds
are executed with respect to the semaphore specified by
semid and semnum:
-
- GETVAL
-
Return the value of
semval
(see
intro(2)).
{READ}
- SETVAL
-
Set the value of
semval
to
arg.val.
{ALTER}
- GETPID
-
Return the value of
sempid.
{READ}
- GETNCNT
-
Return the value of
semncnt.
{READ}
- GETZCNT
-
Return the value of
semzcnt.
{READ}
The following
cmds
return and set, respectively, every
semval
in the set of semaphores.
-
- GETKEYS
-
Place the partial contents of all semaphore
entries into the array pointed to by
arg.buf .
- GETALL
-
Place
semvals
into the array pointed to by
arg.array.
{READ}
- SETALL
-
Set
semvals
according to the array pointed to by
arg.array.
{ALTER}
The following
cmds
are also available:
-
- IPC_STAT
-
Place the current value of each member of the data structure associated with
semid
into the structure pointed to by
arg.buf.
The contents of this structure are defined in
intro(2).
{READ}
- IPC_SET
-
Set the value of the following members of the data structure associated with
semid
to the corresponding value found in the structure pointed to by
arg.buf:
-
sem_perm.uid
sem_perm.gid
sem_perm.mode /* only low 9 bits */
-
This
cmd
can only be executed by a process that has an effective user
ID
equal to either that of super-user, or to the value of
sem_perm.cuid
or
sem_perm.uid
in the data structure associated with
semid.
- IPC_RMID
-
Remove the semaphore identifier specified by
semid
from the system and destroy the set of semaphores and data structure
associated with it.
This cmd can only be executed by a process that has an effective user
ID
equal to either that of super-user, or to the value of
sem_perm.cuid
or
sem_perm.uid
in the data structure associated with
semid.
RETURN VALUE
Upon successful completion,
the value returned depends on
cmd
as follows:
-
- GETVAL
-
The value of
semval.
- GETPID
-
The value of
sempid.
- GETNCNT
-
The value of
semncnt.
- GETZCNT
-
The value of
semzcnt.
- All others
-
A value of 0.
Otherwise, a value of -1 is returned and
errno
is set to indicate the error.
ERRORS
semctl()
will fail if one or more of the following are true:
- EINVAL
-
semid
is not a valid semaphore identifier.
- EINVAL
-
semnum
is less than zero or greater than
sem_nsems.
- EINVAL
-
cmd
is not a valid command.
- EACCES
-
Operation permission is denied to the calling process (see
intro(2)).
- ERANGE
-
cmd
is
SETVAL
or
SETALL
and the value to which
semval
is to be set is greater than the system imposed maximum.
- EPERM
-
cmd
is equal to
IPC_RMID
or
IPC_SET
and the effective user
ID
of the calling process is not equal to that of super-user, or
to the value of
sem_perm.cuid
or
sem_perm.uid
in the data structure associated with
semid.
- EFAULT
-
arg.buf
points to an illegal address.
SEE ALSO
intro(2),
semget(2),
semop(2).
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- RETURN VALUE
-
- ERRORS
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 04:51:42 GMT, January 31, 2023